﻿Public Class ctrEstado
    Inherits ctrPadrao

#Region "Declaração de variáveis"

    Private objEstado As New Persistencia.perEstado
    Private objCidade As New Controle.ctrCidade
    Private iIdEstado As Int32

#End Region

#Region "Propriedades"

    Public Property IDEstado() As Int32
        Get
            Return Me.iIdEstado
        End Get
        Set(ByVal value As Int32)
            Me.iIdEstado = value
        End Set
    End Property

    Public ReadOnly Property sqlConsulta() As String
        Get
            Return Me.objEstado.sqlConsulta
        End Get
    End Property

#End Region

#Region "Métodos públicos"

    Public Function salvar(ByVal iIdEstado As Int32, _
                           ByVal sEstado As String, _
                           ByVal sSigla As String) As Boolean

        Dim bResultado As Boolean = False

        If iIdEstado > 0 Then
            Me.alterarEstado(iIdEstado, _
                             sEstado, _
                             sSigla)
            Me.iIdEstado = iIdEstado
            bResultado = True
        Else
            Me.iIdEstado = Me.inserirEstado(sEstado, _
                                            sSigla)

            bResultado = True
        End If

        Return bResultado

    End Function

    Public Function excluir(ByVal iIdEstado As Int32) As Boolean
        Dim bResultado As Boolean = True

        If Me.objCidade.verificarCidadeEstado(iIdEstado) Then
            bResultado = False
        Else
            bResultado = True
        End If

        If bResultado Then
            Me.excluirEstado(iIdEstado)
        End If

        Return bResultado

    End Function

    Private Sub excluirEstado(ByVal iIdEstado As Int32)

        Try
            Me.objEstado.excluirEstado(iIdEstado)
        Catch ex As Exception
            Throw New Exception("Exceção no método 'excluirEstado'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Sub

    Public Function selecionarEstado(ByVal iIdEstado As Int32) As DataRow
        Try
            Return Me.objEstado.selecionarEstado(iIdEstado)
        Catch ex As Exception
            Throw New Exception("Exceção no método 'selecionarEstado'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try
    End Function
    Public Function retornarCampoEstado(ByVal sCampo As String, ByVal iIdEstado As Int32) As DataRow

        Try
            Dim dtDados As New DataTable
            Dim vRetorno As DataRow

            dtDados = Me.objEstado.selecionarCampoEstado(sCampo, iIdEstado)

            If Not dtDados Is Nothing Then
                vRetorno = dtDados.Rows(0)
            Else
                vRetorno = Nothing
            End If

            Return vRetorno

        Catch ex As Exception

            Throw New Exception("Exceção no método 'retornarCampoCidade'. " & Environment.NewLine & Environment.NewLine & ex.Message)

        End Try

    End Function

#End Region

#Region "Métodos privados"

    Private Sub alterarEstado(ByVal iIdEstado As Int32, _
                              ByVal sEstado As String, _
                              ByVal sSigla As String)
        Try
            Me.objEstado.alterarEstado(iIdEstado, _
                                       sEstado, _
                                       sSigla)
        Catch ex As Exception
            Throw New Exception("Exceção no método 'alterarEstado'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Sub

    Private Function inserirEstado(ByVal sEstado As String, _
                                   ByVal sSigla As String)
        Dim iIdEstado As Int32

        Try
            iIdEstado = Me.objEstado.inserirEstado(sEstado, _
                                                   sSigla)
            Return iIdEstado

        Catch ex As Exception
            Throw New Exception("Exceção no método 'inserirEstado'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Function

#End Region
End Class
